#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
    int n,m,s,t;
    cin>>n>>m>>s>>t;
    vector<vector<int>>v(n+1,vector<int>(m+1));
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>v[i][j];
        }
    }
    vector<vector<vector<int>>>dp(n+1,vector<vector<int>>(m+1,vector<int>(2,-INT_MAX)));
    // int dp[2001][2001][2];
    dp[1][1][1]=dp[1][1][0]=v[1][1];
    for(int j=1;j<=m;j++)
    {
        dp[1][j][0]=dp[1][j-1][0]+v[1][j];
    }
    for(int i=2;i<=n-1;i++)
    {
        for(int j=1;j<=m;j++)
        {
            dp[i][j][0]=max(dp[i-1][j][0],dp[i][j-1][0])+v[i][j];
        }
    }
    for(int j=1;j<=m;j++)
    {
        dp[n][j][1]=max(dp[n][j-1][0],dp[n-1][j][0])+v[n][j];
    }
    for(int j=1;j<=m;j++)
    {
        dp[1][j][1]=max(dp[1][j-1][0],dp[1][j-1][1])+v[1][j];
        dp[1][j][1]=max(dp[1][j][1],dp[n][j][1]+v[1][j]);
    }
    for(int i=2;i<=n-1;i++)
    {
        for(int j=1;j<=m;j++)
        {
            dp[i][j][1]=max(dp[i-1][j][0],dp[i][j-1][0])+v[i][j];
            dp[i][j][1]=max(dp[i][j][1],dp[i][j-1][1]+v[i][j]);
            dp[i][j][1]=max(dp[i][j][1],dp[i-1][j][1]+v[i][j]);
        }
    }
    for(int j=1;j<=m;j++)
    {
        dp[n][j][0]=max(dp[n][j][1],dp[n-1][j][1]+v[n][j]);
    }
    cout<<max(dp[t][m][0],dp[t][m][1]);
}
signed main()
{
    //ios::sync_with_stdio(false);
    //cin.tie(nullptr);
    int T=1;
    //cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}